import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.params.SetParams;

import java.util.Set;

/**
 * @author: Themberfue
 * @date: 2025/4/4 20:08
 * @description:
 */
public class RedisGeneric {
    public static void main(String[] args) {
        try (JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");
             Jedis jedis = jedisPool.getResource()) {
            type(jedis);
        }
    }

    private static void getAndSet(Jedis jedis) {
        jedis.flushAll(); // TODO 清除所有键避免影响操作

        jedis.set("k1", "111");
        System.out.println(jedis.get("k1"));

        SetParams params = new SetParams(); // ? 设置额外参数
        params.ex(1);
        params.nx();
        jedis.set("k2", "222", params); // ? 相当于设置了 1s 过期时间和添加方式为 NX
//        Thread.sleep(2000);
        System.out.println(jedis.get("k2"));
    }

    private static void existsAndDel(Jedis jedis) {
        jedis.flushAll();

        jedis.set("k1", "111");
        jedis.set("k2", "111");

        long trueExists = jedis.exists("k1", "k2"); // ? 这里的参数为变长参数
        System.out.println(trueExists);

        long successDel = jedis.del("k2", "k3");
        System.out.println(successDel);
    }

    private static void keys(Jedis jedis) {
        jedis.flushAll();

        jedis.set("k1", "111");
        jedis.set("k2", "111");
        jedis.set("k3", "111");
        jedis.set("k4", "111");

        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
    }

    private static void expiresAndTTL(Jedis jedis) {
        jedis.flushAll();

        jedis.set("k1", "111");

        jedis.expire("k1", 10);

        long time = jedis.ttl("k1");
        System.out.println(time);
    }

    private static void type(Jedis jedis) {
        jedis.flushAll();

        jedis.set("k1", "111");
        System.out.println("type:" + jedis.type("k1"));

        jedis.lpush("k2", "111");
        System.out.println("type:" + jedis.type("k2"));

        jedis.hset("k3", "f1", "v1");
        System.out.println("type:" + jedis.type("k3"));

        jedis.sadd("k4", "111");
        System.out.println("type:" + jedis.type("k4"));

        jedis.zadd("k5", 30, "m1");
        System.out.println("type:" + jedis.type("k5"));
    }
}
